The present exemplary embodiments broadly relate to synchronizing images from a plurality of disparate sources. They find particular application in conjunction with the identification of similar images to minimize misalignment of sequences. In one embodiment, a cost function is utilized to properly align a sequence of images. However, it is to be appreciated that the present exemplary embodiments are also amenable to other like applications.
Images can be captured during an event via cameras, cell phones, PDAs, or other means. Organizing captured images in a proper sequence can be difficult as angles, lighting, subjects, etc. can vary from image-to-image and from camera-to-camera. This problem can be exacerbated when time of capture is unknown. In order to overcome such difficulties, metadata can be analyzed to determine a time stamp associated with each image. This information, however, relies upon external settings that can be inaccurate. For example, the time stamp may rely upon a user setting a current time/date. Such setting can be unreliable if it is not updated to a current time zone, daylight savings, etc. As a result, the time line or sequence of image capture can be incomplete and/or erroneous.
Conventionally, the synchronization of multiple cameras is achieved in a professional environment by linking all cameras to a single computer that sends synchronization signals. However, all cameras are rarely available to one person and rarer still to a person that has computer software for image synchronization. Additionally, there is a large body of scientific work on video alignment. The assumption is that two (or more) cameras take different shots of the same object/scene and thus that the videos may be aligned frame-by-frame. Only a few images in each sequence of photos typically correspond to the same object/scene. Hence, typical video alignment algorithms cannot be applied.
Other approaches have been taken to try and identify proper sequencing of camera images. One approach is described by Breeze Systems in an online article at http://www.breezesys.com/articles/multiple_cameras.htm. It consists of taking a shot of the same clock using each camera to provide a reference time (this can be before, during or after the event). This is only possible if one person has access to all cameras, which is difficult, if not impossible, as noted above.
Another approach is described in US Patent Publication No. 2006/0200475 assigned to Eastman Kodak. This application is directed to a method for combining a plurality of new images into an existing database of chronologically ordered images. The database images are classified into event groups based upon a time difference threshold, and within event groups into event subgroups based upon a similarity measure. First, one or more image features of each of the new images is assessed. Next, the new images are ordered into clusters based upon the image features and a representative image in each of said clusters is selected. A segment of said database images is designated that chronologically overlaps the new images. In the segment, a set of one or more of said database images similar to each of said representative images to provide sets of retrieved images is identified. Different event subgroups are associated including one or more of said retrieved images with each of said clusters to provide matched subgroups. The new images are assigned to the matched subgroups associated with the respective clusters.
There are several shortcomings, however, associated with this approach. First, new images are assigned to image clusters within a database. Thus, the problem of synchronizing image sequences taken by multiple cameras is not addressed. Second, an assumption is made that a database of chronologically ordered images pre-exists. This ordering does not exist when images are gathered from disparate sources and thus is not applicable to aid in sequencing such images. Lastly, a further assumption is made that all images (e.g., database images and new images) are synchronized. Again, such synchronization does not exist with images from multiple sources.
Accordingly, there is a need for systems and methods to synchronize images taken from a plurality of sources with little or no temporal knowledge regarding the same.